import java.util.ArrayList;
import java.util.List;

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
     *
     *
     * @param root TreeNode类 the root of binary tree
     * @return int整型二维数组
     */
    //不知到遍历的树结点要存多少个，可以使用list
    List<Integer> prelist=new ArrayList<>();
    List<Integer> inorderlist=new ArrayList<>();
    List<Integer> lastlist=new ArrayList<>();
    public int[][] threeOrders (TreeNode root) {
        // write code here
        traveler(root);
//前中后遍历有三行，每行有list.size()个数
        int[][] arr=new int [3][prelist.size()];

        for(int i=0;i<prelist.size();i++){
            //让lsit使用下标访问，将递归得到的结果分别存入数组的每一行
            arr[0][i]=prelist.get(i);
            arr[1][i]=inorderlist.get(i);
            arr[2][i]=lastlist.get(i);

        }
        return arr;
    }
    //递归遍历，用list保存前中后序遍历的结果
    private  void traveler(TreeNode root){
        if(root==null){
            return ;
        }
        prelist.add(root.val);
        traveler(root.left);
        inorderlist.add(root.val);
        traveler(root.right);
        lastlist.add(root.val);
    }
}